package config

import (
	"encoding/json"
	"fmt"
	"log"
	"os"
)

// Config 应用配置结构体
type Config struct {
	Database DatabaseConfig `json:"database"`
}

// DatabaseConfig 数据库配置结构体
type DatabaseConfig struct {
	Host     string `json:"host"`
	Port     string `json:"port"`
	User     string `json:"user"`
	Password string `json:"password"`
	DBName   string `json:"dbname"`
}

// LoadConfig 从配置文件加载配置
func LoadConfig(configFile string) (*Config, error) {
	if _, err := os.Stat(configFile); os.IsNotExist(err) {
		// 如果配置文件不存在，返回默认配置
		log.Printf("Config file %s not found, using default configuration", configFile)
		return &Config{
			Database: DatabaseConfig{
				Host:     "115.190.212.199",
				Port:     "3306",
				User:     "root",
				Password: "Cuixiaojie199!",
				DBName:   "market",
			},
		}, nil
	}

	// 读取配置文件
	data, err := os.ReadFile(configFile)
	if err != nil {
		return nil, fmt.Errorf("failed to read config file: %w", err)
	}

	// 解析JSON
	var config Config
	if err := json.Unmarshal(data, &config); err != nil {
		return nil, fmt.Errorf("failed to parse config file: %w", err)
	}

	return &config, nil
}